VERSION HISTORY (PART 5): --------------------------+ History From 05/21/2001, to 01/01/2002 -----------------------------------------------------------------------+ Version .88 (01/01/2002) Added/Changed some sounds effects to give more feedback on how characters are being hit. Depending on where a character is hit, weapons being used etc. Characters now stay Stunned slightly longer after being hit. Melee attacks that hit a wall will now hit characters that are between the attacking character and the wall. The character will still rebound from the wall as before. Build Mode now backups and restores it's HitMap Surface when it's Alt+TAB'ed away and back. Added Undo to Build Mode's HitMap Editor (Press Z). Framerate Regulation code has been rewritten once again. Average FPS are no longer calculated or used. In fact the game now measures Frames Per every Half Second so it can adjust game speeds faster then before. This is all to insure a consistant gamespeed (at 24fps). There was a bit of debugging code printing numbers in the console that I finally tracked down and removed. It's been annoying me for months now. Added a Paint Bucket to Build Mode for filling area's of the HipMap. This fucking thing rocks! While HitMap Editing, Holding Alt while Clicking now set's the Bruch Type to that of the terrain under the cursor. i.e. Photoshop's color'grabber. Build Mode no longer allows Particle Spawn Diameter's of 0 (Caused a Divide by Zero). A copy of a Structure can now be spawned in Build Mode by pressing 8 (Like most other objects). When exiting HitMap Edit Mode (Build Mode stuff), the changes now take effect. Before the Map had to be saved, then loaded before objects would be effected by the changes. Structure Objects (Trees, and such) now have a Z cord. This gives me a little more freedom. Structure Objects now have a repeat value. This allows the same object to repeat it's image multiple times across the map. This allows for more stuff to be made using less resources. Pressing Ctrl+Z in Build Mode with an Item selected drops the item from the sky. This is just a way to put an item on the ground or on top of something without having to worry about it being underground etc. Pressing Ctrl+Z in Build Mode with a Structure selected places it at ground level. Wooden items can now break when bashed over someone head. Currently there's only a Stool that does this but I'll no doubt add a few more. When hitting a door, if the attack is doing damage it'll make a sound effect and spawn some wood splinters. Added a Gib and Heart Items. Like body parts, they bleeds while airborn. These can be placed in Maps with Build Mode. The engine also may spawns these when a character dies in a graphic manor. Default Con for Party Members is now +1 (it was +2). This is mainly so when newbies find their first Cure Potion they'll see it's effects. The time it takes to Swap Items is no longer effected by Agl. It's a set time now, which is slightly faster then it typically was. I desided Swapping should be fast and the time spent should be consistant. Hp and Max HP once again can be edited independently in Build Mode. When I added the GUI I axed this. Turns out it's quit handy. When increasing HP, if the Max HP is too low it will be pushed up. Likewise when lowering the Max HP if HP is too high it's pushed down. Characters and Items can now be Nudged in Build Mode in the same way as Covers and Structures. (Hold Ctrl+Cursor Key, Also hold Shift to Nudge by 5 Pixles) Particles are now draw as "high" or "low" based on their Z cord. It was based on Type. Exceptions are Number Particles which alway draw "high" and Water Surface Particles which are always "low". Note Particles are not Y-Sorted (a.k.a. Z-Buffered) due to the huge performace loss. This "high" and "low" business does an acceptable job of faking it though. Fixed a nasty bug with Altitude Terrain Hit Detection. This is the stuff that tells if something's hitting the ground or not. Amazingly it only seemed to cause one problem in the game. Fixed some problems with Covers (i.e. roof tops). There was a bug causing other covers to become invisible when only one was to do so. There was also a Line of Sight problem with them. Added some AI for when NPC's are much higher or lower then their target. They will now do a weapons check to see if they can hit their target from where they are. Otherwise they un-target. i.e. An NPC at a high elevation with explosion potions knows he can throw them down at you while an NPC with just a sword will wait till your in his reach. Fixed a bug causing the background graphics to not load when the game's window is restored (coming back from an alt+tab), this in turn caused the engine to give an error and shutdown. Characters, Blood and Particles no longer stain if they land on a bridge. Dead Characters laying on top of bridges are now blited there (instead of stained). NPC's will no longer break from a fight it they are "out matched" HP wise. i.e. If you had 150HP and your fighting a little guy with only 30HP, it would simply run for it's life. Seemed like a good idea but the reality is, it's no fun being a big guy with nothing to fight. So I've removed this feature. This was also allowing the NPC to cheat by knowing your HP, which is a no no. NPC's will still break from a fight if they're very low on HP though. Added a check to Item vs Character hit detection to see if the item passes under the character. Before the bridges were added it was assumed this would never happen. Added altitude check to Critter hit detection. Added altitude check to Weapon Spells. Fixed a bug causing characters at high elevations to disappear at the bottom of the screen. The engine no longer has to be shutdown before loading another Map. However it still does before creating a new one. Framerate Regulation is now quicker about adjusting the gamespeed. Damage levels for many spells have been tweeked. Damage from thrown items is now effected more by the speed of the item. HP is no longer incremented -/+2 as before. If Con is -2 or 2 HP will be incremented -/+1 but two time at even intervals. This have very little effect on gameplay but allows you to better see the effects of extreme Con. MP can now increases twice as fast as before. MP gain, if any is based on how "calm" the character is. Item Spot Locations are not always loaded when a call to load a Graphic Set is made. Before these weren't loaded if the graphics were already in memory. This fixes problems with a character's items being positioned wrong because it's Graphic Set had already been loaded but using a different scale. Fixed a bug causing structure and cover sets to fail when loaded by Build Mode. Fixed a bug causing savegame loading to crash the game. This bug was created in .87 Fixed a bug causing Blasts to frag Critters that didn't exist. Added MP and Required MP Bars to the Magic UI. These make it easier to compair Spells at a glance. Dead Bodies now clip at the edges of the Cell when they're stained on the ground. Characters and Items flying upward will now hit the bottom of bridges and come back down instead of going through them. Fixed yet another Bridge bug that was messing up Character Terrain stuff. -----------------------------------------------------------------------+ Version .87 (10/04/2001) New rules for Magic use: Originally you weren't going to be able to cast magic unless you had it's Fragment. This is no longer so, the new rules are as follows: A character only needs to be level 1 in a Magic Circle to cast from it. At Level 0 the Circle is not avalible to that character. More spells become avalibe in each Circle as level increases. Without the Fragment for a Magic Circle, Level in that Circle is capped at 9. Once the Fragment is obtained, the cap is 50. When the Party obtains a Fragment, all Party Members will have their level of that Circle increased to 10 if is lower then that, even if it was 0. Halfassed Setup (most of you never got to see this gem) has been replaced with a real Setup.exe It took awhile to code just right, but it's well worth it. This thing does it all! You can install all or just some of many components. Once installed you can add/remove parts as you wish. Stuff that's not installed is just grabbed off the CD (there will be a CD, and it will be Required). It's also got an un-installer. A nice feature is it let's you keep your savegames on your system if you want to re-install the game again later on. The engine now handles all file paths differently. For most files the engine will now check up to three different paths for the file. It first checks \Expansion. Currently this is not used but it is fully supported. This is sort of like a plugin's folder. New content can be added to this folder allowing for expansions. If I want to add more land to the world, characters, whatever, it can be done. Because this is the first folder to be checked it can also be used to patch content. Next it'll look in \Game. "Game" could be anything but defaults to "Game1". This is much like Quake's "base" folder. Each Game folder contains all the contents of a game world. Meaning an entirely different game world, with it's own characters, sounds and graphics could be created simply by supplying the content to another Game folder. The engine will use whatever Game is requested in the command line. The \Expansion folder would contain Game subfolders so any of these Games could be expanded on. SCH will come with an EULA that outlines how people can use these folders. Finally the the engine checks the CD. The CD also has Game folder(s). Basically this stuff allows for the custom installations mentioned above, as well as expansions. Added a CD check and some anti-hacking measures. Obviously I'm not going to explain how these work. When Build Mode saves it now places all non-active characters far off the map. This is a way to flag that these characters can not be resurrected, and thus won't create a puddle of blood over those characters when the game loads that map. When Targetting, the Status bars now remain visible. Also when Targetting, if the cursor is over a Party Member, Mini HP/MP bars now display over them. Fixed a divide by zero with the Bluster spell. When grabbing a character, the distance the two characters can be while still maintaining the grab is now based on the width of the grabbing character. This means bigger character's grabbing people will have an easier time keeping the grab, while giving no advantage to smaller characters. The allowed altitude difference during a grab has been increased as well. This allows for the held character to be hit harder with out breaking the grab. Also, if the held character falls off a very small ledge he'll still be held. At the start of a new game, all items are now deleted. This insures there are no associations between characters and items leftover from the last game. This is fixes problems with invisible items held by characters and similar problems. The Character Select screen now shows thumbnails of characters as you cycle through them. These show until an actual character loads (which happens after your idle a few seconds). I'd like to point out, this was a fucking nightmare to get working! Slapped some thumbnails on the Inventory Panel too. Just because I can. The Shield Spell is in. This required some extra code with loading/saving of files because of it's nature. Once cast on a character, that character is shielded from physical attacks and most magic attacks. The Shield has it's own HP but unlike character HP, it looses 1HP each time it's hit, regardless of the potential damage of the attack. For more info see "magic.txt" Fixed a bug causing one or more characters to not display in the Create Party screen. Not sure if this bug showed up in the last version or this one but it's fixed now. Fixed a bug causing impassible items (Doors, Impassible Rocks etc.) to create impassible terrain at the start of a map even when they were inactive. CharacterTerrain() is now called every cycle instead of every other cycle. This is better for obvious reasons (It lets the characters know what they're standing on). The reason it wasn't doing this before is to keep gamespeeds up. however back then the function was a slow pile of ass. You can now copy the stats of a Particle Spawn to another by pressing 9 in Build Mode. (Works just like characters and items). Characters Item and Particle Spawns can now spawn a copy of themselves by pressing 8 in Build Mode. This is much easier then creating a new object then copying stats to it. An army can now be created simply by tapping 8 a few times. Fixed the bug when the camera pans to a Particle Spawn, it would go to the wrong place. Cords for most objects are now shown when they're selected. I found this helpful with aligning things with different maps. NPC's now do an altitude check before attempting a Jab or Slash attack. Characters and Items over an altitude of 128 pixels are now displayed over Covers. This means Bridges (which is a defined terrain type) can now be used (which have been in for months, but there was no way to display them properly). This also allows for characters to stand on some rooftops and other such structures. Items now have correct hit detection with Bridges. Line Of Sight now has correct hit detection with Bridges. This also effects shadows when light is enabled. Fixed a bug causing Character's to be on top of a Bridge when they were previously under it when going between two maps and the Bridge is on the edge of both maps. NPC's that watch other characters (Guards, Enemies etc.) no longer bother with characters with HP <=0. This doesn't effect gameplay but should improve gamespeed slightly as distance and line of sight was being calculated against dead characters, which of course was pointless. Inactive (Dead) NPC's were still running their AI! I've put an end to that nonsense as well. Again, no gameplay effect but no doubt a speed increase. Pressing Z in Build Mode while in Character Edit Mode causes the selected character to fall from the sky at it's current x, y position. This allows the character to be placed on top of things that it was previously under. NPC's that are higher then the character they are considering targeting will stil do so if they have a bow or an explosion potion. This code was somewhat in before, it's now been revised. Fixed some problems with Character creation within Build Mode. This was mostly graphical however it made map building a bitch. Fixed bug with Neutral Hostile characters Targetting, and thus, attacking themselves. Fixed another bug with Neutral Hostile characters causing all their hits to miss. Fixed a bug causing characters default width and height to be applied incorrectly. When loading Character Graphic Set Item Spot Locations, a check is now done on all active characters to see if any of the ones using the Graphic Set being loaded are not standard size. If so, the Item Spot Locations are scaled to match the character's size. Item Spot Plot has a couple of new cursor items to work with. Pressing F5 cycles through them. Clipping involved with Scaled Characters has been improved to allow any sized Characters without fucking up. Item Spot Plot now displays the Current Frame scaled when you hold down the SpaceBar. While Scaled, everything still functions the same, spots can still be plotted. On the right size of the screen in Item Spot Plot there are now Scale settings for the scale preview. See "Item Spot Plot.txt" for more info. Select Characters can now Transform when they're HP is low. This is a change in graphic set. The Transformation is limited to NPC's and will only happen during a melee attack. Each graphic set a Transformation uses takes one away from the map. i.e. The map can only have 4 Graphic Sets, so if a character Transforms two times that only leaves one set for other characters. The engine will check to see which sets are in use so a character that Can support two Transformation won't if the required sets are in use. Special effects are also possible. This makes characters with visable damage possible. i.e. Attacking a Blood Zombie with low HP will now rip it's skin off and he'll become a Blood Skeleton. Added arrows to the edges of the screen when party members are off the screen. All Characters now have a difficulty rating. On the Create Party screen the overall difficulty of the game is now displayed based on these ratings. It also considers if characters are controlled by AI or a Player. This way newbies won't have to study character stats just to enjoy the game. Text using Font-A (the big blue font) can now be centered. The formula calculating item throw speed has been tweaked so that item mass has more effect. If there's a non-fatal error while in Build Mode and the Mini-Console is enabled; The Console will not come down screen anymore. This was a pain in the ass. Build Mode camera now pans to Particle Spawns (Didn't it always?). Well it's workin now :) Added Rats (Critter). For an added bonus they feed on dead bodies. Armed Spells for each Party Member is now remembered each Player. Meaning, if you have Spell-A Armed and you take control of another Party Member and Arm Spell-B, then you switch back to the original Party Member, Spell-A will still be Armed for that Member. Added Ambient Sound. Unlike music this is not just a looping track. The engine plays various sounds depending on the Ambient Sound Mode. i.e. The Storm mode has multiple rain tracks and various thunder effects that play in random stereo positions. Ambient and BGM settings are now saved in Map and SaveGame files. Build Mode can now edit Ambient and Music settings. Build Mode text messages now use my own functions instead of GDI. Added Default functions to Build Mode's GUI. Holding Shift+F or Right Clicking Default in Build Mode defaults all items (same can be done for characters). Some more changes have been made to held item functionality. These changes allow for more freedom when creating characters. Some more tweaks have been made for when the item is held by a character in water. Characters that are in the air while over water appear that way (they were displaying On the water). Thud sound effects no long play when a character falls in water. When changing graphic sets in Build Mode, all characters are set to their Running positions. Since some character sets don't have walking graphics this insures there's no graphical problems. Characters using graphic sets that do have walking graphics will relax after their normal timout. Characters have been orginized numerically as they will be in the final game (before they were simply numbered in the order they were created). They've also been put into groups. i.e. All Zombies are in a group, Guards in another etc. In Build Mode: When a graphic set is changed, all characters using that set are now defaulted. Default character stats are based on their graphics so this insures character abilities and appearances match. Character stats can always be edited once their graphics are setup. Character Graphic and Sound Sets can now be cycled in reverse order in Build Mode. In the Character Selection Screen, when clicking the arrows to select your character: Left Clicking cycles to the next character with Right Clicking cycles to the next group. In Build Mode, to cycle characters by group, hold Ctrl. Item Spot Plot has been given this group treatment as well. F1/F2 are still Prev/Next, like Build holding Ctrl will advance to the group. F3 in Item Spot Plot now lets you manually enter a Graphic Set number to go to. Since nonexisting sets are skipped when using F1/F2 this is used to create a new ISP File. The "Second item Is visable" option is now default when creating a new isl file. Editing Sound Sets in Build Mode work just as Graphic Sets (with groups and such). Character Magic Graphics are now stored in a separate file. Like the Walking Graphics these are now optional. If the file is supplied then the graphics are used, otherwise it will use frames from the character's Slash Attack animation. The reason for this is I don't want to be forced to make Magic animations that will never be seen. For example most animals won't be casting magic. It's possible that the Player could take control of a sheep or something and make it shoot fireballs. In this event the alternate animations will make due. This will also speed up load times, save hard drive space and speed up the game's development. Item Spot Plot has been modified to work with the new optional magic code. Required MP bar was displaying Red when the character's MP was equal to the Required MP. i.e. I had > instead of >= (and I feel mightly dumb). Font A (big dialog font) finally get's lowercase letters! And a few misc characters is was missing. I've been putting that off for roughly two years now :) Resized Font A's source image, which was one long row of characters. It's now two shorter rows. The massive width of the original was too much for some older video cards. I did a lot of graphical touchups with the 8-bit graphics. In Build Mode, the screen remains blacked out untill a Map is loaded. Because graphics often stay in video memory it would sometimes appear a map was already loaded. Structures and Covers can now be Nudged in Build Mode by holding Ctrl and using the Cursor Keys. Holding Ctrl + Shift will Nudge by 5 pixels. Fatality Sound Effects have been enabled. All of the Map Markers (World Map Panel) have their own graphics. The values in "worldmapscale.dat" are now the cords (in cells) of the upper left and lower right cells. The engine now handles all the math. So if someone were to make a new world all they have to supply is the cords for these two cells and the in-game map will display correctly. Each Status Panel now shows the Icon of the Spell which is Armed by the Player controlling the Character which the Status Panel is assigned to. (And if you think that's confusing you should try coding it.) Added numbers to the Status Bars (HP, MP..) Status Bar Graphics have been changed so the numbers and the bars themselves stand out much better. Found a workaround for a driver bug in Radeon Cards. This caused a distortion in status bars and window borders. These things now look correct when using a Radeon based card. Character Stats now cap at the following levels: Con +2 Exp 32700 Str 100 Def 50 Agl 3.50 Max HP 200 (500 for NPC, i.e. Bosses) Max MP 200 Added a Boomerang. It does not follow you like in other games, you actually have to catch it. Like any thrown item, character exp effects how straight it will go. Only the character that throws it may catch it. If that character is not in a standing/running position when the weapon returns it will knock the character down but do no damage. If a party member throws it, it will pass through other members. I let the AI know to use the boomerang as a long range weapon. AI now treats whips as long range weapons. They were using them just as a longer melee weapon which wasn't working as well. Weapon Swith AI has been tweaked. It also has been adjusted for the Whip and Boomerang. The sound effect for Critical Jab hits has been fixed (was the wrong format). Vendor Inventory editing in Build has been made much easier. Each Vendor's inventory no longer needs to be saved manually. When saving the map the engine will detect any change and save/delete vendor files as needed. See "Build Mode.txt" for info on Vendor UI. When editing an Item in Build Mode, the item is now displayed on the left build panel. This is mainly for editing vendor inventory since those items don't display anywhere else. Added Piles of gold coins. These work just like money bags. Did some graphical tweaking to some items so they stand out better. Explosion and Str Potions should look less alike. Window border showing up in the Title Screen while in some video modes should be fixed. Opening the Config Panel (Or clicking it's button while already viewing it) will cause the game to attempt to re-acquire any lost input devices. i.e. If you press the mode button/switch, unplug the device or another program takes control of it somehow, The game will loose control of the device. Controls are no longer defaulted after a Game Over. Fixed a bug with Address Book saving. The camera no longer tracks characters that are controlled by another system on the network (When in Group Track Mode). Problems with the cursor winking out and delays in the Title Menu are fixed. Server now tells clients when a character displays damage. i.e. Someone get's hacked a message is sent and the clients play the character's pain sound effect and display the damage particles. This has nothing to do with actual HP deduction. HP info like most character and item data is sent automatically as needed. Console now holds up to 64 lines of text by default, instead of 32. Added an on-screen mini-console. This displays the last few things printed to the console for a short amount of time. Added a new pref that selects when the Mini-Console displays. Options are, "Never", "Always", and "While Networked". The last option keeps the Mini-Console turned off unless there's a network connection. This is the default as this console will mainly be used for network chat. Framerate Display is back on the right side of the screen. Like the Mini-Console this now moves to the top edge of the screen if a character status panel is not there. I've added a black backdrop to the characters on Font-D (the console font) to make them stand out better. Attack AI is now aware of the range of it's weapon and use that to it's advantage. Sometimes they will over judge this range and miss. This is intentional as it adds to the gameplay and gives an advantage to characters with high Agl. When hitting a wall, the character is now knocked back slightly. This combined with some AI tweaks prevents the Wall Exploit. i.e. Standing against a wall you were untouchable since any attack would hit the wall and not your character. A lot of the 8-bit graphics have been recreated using different dithering methods. Before I was using the same method on all graphics expecting them to come out good. However I've learned that different methods work better with different types of art. So the bottom line is the 8-bit graphics look better. Fixed Cursor problems while Targeting. Fixed the camera panning to the north west corner of the map when the party is dead. Made a slight change in when and what item graphics are layers over/under the characters that hold them. This is to allow for a bit more control of secondary item placement. Item Spot Plot (a character editor) has also been tweaked for this. The Stat Summary displayed in the console between maps has been removed. Added network message for Item Spawning. Added network message for Item Deletion. Added a console message when someone is Back-Stabbed with a Dagger/Knife (Which deals 3x damage). Removed the use of a global text buffer in the DirectPlay thread. This was causing text data to be overwritten, resulting in various problems including crashes while loading and various text message glitches. These bugs only effected the game while running in Client or Server mode. Critter AI is now turn based. i.e. Only one Critter will move at a time. This greatly reduces network traffic when a lot of Critters are around. Critter Movement AI has been tweaked due to the above. HP data is no longer sent if the change in HP was only a result of Con. i.e. Character HP changes constantly due to Con level. This change can be predicted by the client and thus doesn't need to be sent. Most client side control for human controlled characters is now enabled. i.e. When playing on a client machine and you control a character. That machine will handle a lot of the character's actions. However, the server does also. What the character is doing on the server overrides what it's doing on the client in the event that there's a difference. The reason I enabled this stuff is because it acts as prediction. Allowing instant feedback to the player in control. Fixed item graphical problems on the client. -----------------------------------------------------------------------+ Version .86 (Released as an Update to Version .85, 05/28/2001) Files Included: \incoming.exe \Docs\Version History Part 4.txt \Docs\Console Commands.txt KNOWN BUG: If a Client attempts to connect to the Server before it is actually running the Server may crash. i.e. Make sure the Server is running before everyone starts connecting. I'll look into a fix for this. Network code has been highly optimized from before. I won't be getting into too much detail on this stuff in these docs. The Server now monitors Send ques and pauses transmission to any client that is getting flooded. Flooding can happen for a number of reasons. i.e. The Client is taking longer to load something, or it just got sent a game-state and needs time process it. When a Cliet leaves. Any Players and Character is was controlling are made available. Clients no longer handle Level Up Messages. AddressBook now saves automatically when a connection is made. Added a Network Stats display. This is used in my endless quest to optimize the network code. Console command "/shownetstats 1" to display it. When typing in the host address in the Network Panel. Player Input Devices are now ignored. This was causing conflicts while typing keys also used by a Player. Player Control and Character Control network messages are now processed in the order were are sent. This should fix problems with these things getting out of sync. All Clients are now sent a Game State message just before a New Game is put into play. This insures all clients get brought into the game. Eventually I'll allow Clients to take part in Creating the Party but for now I'm just focusing on the basics. The NumberPad Enter Key now works like the one on the main keyboard. Pressing Esc while entering an IP in the Network Panel no longer closes the Panel as well. Fixed graphical glitches with Client side characters. The console can now be used to chat with other players on the network. Multi-Players using the Keyboard now have the same default keys. This is because someone may be Player 1 in their normal single-player game but when they play on their favorite server they're Player 3 or whatever. He shouldn't have to reconfigure all his keys because of this. It will be more rare that more then one person is using the Keyboard on the same machine (in that case, they will now have to re-configure). The FPS display now moves down when the console is down. -Documented by Kevin Reems